

$\ast$$\ast$(left)$\ast$$\ast$ piecewise polynomial path obtained $\ast$$\ast$(right)$\ast$$\ast$ multiple safe corridors in subinterval




\begin{DoxyItemize}
\item $\ast$$\ast$(running \hyperlink{namespacetraj__gen}{traj\+\_\+gen})$\ast$$\ast$ step by step tutorial
\end{DoxyItemize}

\subsection*{0. Release notes}

\paragraph*{2019/5/16}

Q\+Slider was added. As of now, {\itshape \hyperlink{namespacetraj__gen}{traj\+\_\+gen}} can accommodate height input from user. Adjust slider for height and then select waypoint. In this way, height value will be encoded together(see below).



\subsection*{1 Installation}

\subsubsection*{1.\+1 Dependencies}

\paragraph*{(0) R\+OS and qt related packages}

\paragraph*{(1) qp\+O\+A\+S\+ES}


\begin{DoxyItemize}
\item The package bases qp\+O\+A\+S\+ES as quadratic programming solver. Please refer \href{https://projects.coin-or.org/qpOASES}{\tt https\+://projects.\+coin-\/or.\+org/qp\+O\+A\+S\+ES} and install the library. (make sure {\ttfamily sudo make install} after build of qp\+O\+A\+S\+ES)
\item Let the qp\+O\+A\+S\+ES package direcotry \$\{qp\+O\+A\+S\+E\+S\+\_\+\+S\+RC\}. Please insert your qp\+O\+A\+S\+ES directory in C\+Make\+List.\+txt
\end{DoxyItemize}


\begin{DoxyCode}
1 ## System dependencies are found with CMake's conventions
2 find\_package(Boost REQUIRED COMPONENTS system)
3 // here insert your qpOASES directory 
4 set(qpOASES\_SRC /home/jbs/lib/qpOASES-3.2.1)
5 
6 file(GLOB\_RECURSE qpOASES\_LIBS $\{qpOASES\_SRC\}/src/*.cpp)
\end{DoxyCode}


\subsection*{2 R\+OS Node A\+PI}

\subsubsection*{2.\+1 Published Topics}


\begin{DoxyItemize}
\item control\+\_\+pose \mbox{[}geometry\+\_\+msgs/\+Pose\+Stamped\mbox{]} \+: published topic for desired control point of current time step
\item safe\+\_\+corridor \mbox{[}visualization\+\_\+msgs/\+Marker\mbox{]} \+: the safe corridor marker
\item trajectory \mbox{[}nav\+\_\+msgs/\+Path\mbox{]} \+: generated trajectory
\item trajectory\+\_\+knots \mbox{[}visualization\+\_\+msgs/\+Marker\mbox{]} \+: the points on the path evaluated each waypoint time
\item waypoints\+\_\+marker \mbox{[}visualization\+\_\+msgs/\+Marker\+Array\mbox{]} \+: the recieved waypoints from user
\end{DoxyItemize}

\subsubsection*{2.\+2 Subscribed Topics}


\begin{DoxyItemize}
\item /waypoint \mbox{[}geometry\+\_\+msgs/\+Pose\+Stamped\mbox{]} \+: waypoint input from Rvis by user
\end{DoxyItemize}

\subsubsection*{2.\+3 Parameters in Launch}


\begin{DoxyItemize}
\item world\+\_\+frame\+\_\+id \+: the world frame id. (default \+: /world)
\item waypoint\+\_\+topic \+: the topic name by user input
\end{DoxyItemize}

\subsection*{3 U\+S\+A\+GE}

\subsubsection*{3.\+1 Qt gui}



This library provides interface where you can specifiy a sequence of waypoints from Rviz

(1) R\+OS connect \+: please push the button at the beginning while roscore is running

(2) select waypoints \+: waypoints insertion from rviz is allowed while this button is clicked

(3) trajectory generation \+: quadratic programming with assigned parameters

(4) publish \+: the time allocation of the trajectory is equal division from 0 to \char`\"{}simulation tf\char`\"{} of gui. A desired control point will be published in {\itshape geometry\+\_\+msg/\+Pose\+Stamped} message type. The evaluation time for control point will be paused by re-\/clicking (still publishing). If you want to evaluate the trajectory of interest again from the start, Then release the button and re-\/create the same trajectory with {\itshape Traj generation} button.

(5) manage waypoints \+: please provide the absolute of directory for txt file

(6) textbox. important message will appear

\subsubsection*{waypoints selection from user}



{\itshape You can also save and load the waypoints in txt file format. In that way, you may assign the heights for each waypoint}

\subsection*{4 Alogrithm}

This package is based on minimum jerk or snap with motion primitives of polynomials

{\bfseries refer} Mellinger, Daniel, and Vijay Kumar. \char`\"{}\+Minimum snap trajectory generation and control for quadrotors.\char`\"{} 2011 I\+E\+EE International Conference on Robotics and Automation. I\+E\+EE, 2011.



 \subsubsection*{4.\+1 Waypoints}



\paragraph*{(1) Soft waypoints}

not necessarily pass through the specified waypoints. But it can minimize jerk more.

\paragraph*{(2) Hard waypoints}

the waypoints will be passed exactly as hard constraints





\subsubsection*{4.\+2 Corridor}



\paragraph*{(1) multiple sub boxes between waypoints which is axis-\/parallel}

Number of constraints will be increased but x,y,z can be solved independently.

In general, imposing too many sub constraints will be infeasible for polynomial curves

\paragraph*{(2) single box between waypoints (sitll developing)}

Number of constraints will be decreased but x,y,z cannot be solved independently

\subsection*{5 Issues}


\begin{DoxyItemize}
\item please avoid using polynomial order 6 for the case where you minimize the jerk squared integral (objective derivate = 3) 
\end{DoxyItemize}